Self-Learned Algorithms - 04
This is my learning note about algorithms.
Reference
- 《小浩算法》) - 字符串系列
344.反转字符串
https://leetcode-cn.com/problems/reverse-string/
题解
- 原地修改
解法
- 双指针
1 | i, j = 0, len(s)-1 |
- 单指针?(奇怪的是时间没有减少,内存消耗反而增加了)
1 | for i in range(len(s)//2): |
- 一步法
1 | s[:] = s[::-1] |
s = A
和s[:] = A
的不同之处:s = A
更改s
这一变量名所指向的对象,让s
变量指向A
所指向的对象。s[:] = A
对s
指向的对象赋值,把A
变量指向的对象的值逐个copy到s
指向的对象中并覆盖s
指向的对象的原来值。
387.字符串中的第一个唯一字符
https://leetcode-cn.com/problems
题解
- 既然是第一个唯一字符,那就是倒着数最后一个出现第一次的字符。反向一次遍历,遇见出现第二次的就设置无限大,出现第一次的就保存位置指针,最后取最小值或-1即可。(萌新第一次灵光一现,也不知道之前有没有出现过这个思路)
解法
- 两次遍历
1 | dicts={} |
- 一次遍历?好像没有人用过这种解法?
1 | if len(s) == 0: return -1 |